package com.pureut.storage.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.PickingRest;
import com.pureut.storage.domain.PickingRestDetail;
import com.pureut.storage.dto.*;
import com.pureut.storage.export.PickingRestExport;
import com.pureut.storage.vo.PickingRestDbVo;
import com.pureut.storage.vo.PickingRestVo;
import com.pureut.storage.vo.UpdateDocVo;

import java.util.List;

/**
 * @author: CM
 * @date: 2022/12/28    17:46
 */
public interface PickingRestService extends IService<PickingRest> {

    /**
     * 新增其他出库
     * @param pickingRestVo
     * @return
     */
    boolean addRest(PickingRestVo pickingRestVo) throws Exception;

    /**
     * 修改其他出库
     * @param pickingRestVo
     * @return
     */
    boolean updateRest(PickingRestVo pickingRestVo);

    /**
     * 关结其他出库单
     * @param pickingRestVo
     * @return
     */
    boolean closeRest(PickingRestVo pickingRestVo);

    /**
     * 删除其他出库单
     * @param ids
     * @return
     */
    boolean deleteRest(String ids);

    /**
     * 查看其他出库单
     * @param id
     * @return
     */
    PickingRestDto view(Long id);

    /**
     * 查询其他出库列表
     * @param pickingRestVo
     * @return
     */
    List<PickingRestDto> getList(PickingRestVo pickingRestVo);

    /**
     * 查询其他出库列表
     * @param pickingRestVo
     * @return
     */
    List<GetPdaDto> getListPda(PickingRestVo pickingRestVo);

    /**
     * 导出
     * @param pickingRestVo
     * @return
     */
    List<PickingRestExport> getInfoExport(PickingRestVo pickingRestVo);

    /**
     * 其他出库(PDA)
     * @param pickingRestDbVo
     * @return
     */
    PickingRestDbDto pickingRestIssue(PickingRestDbVo pickingRestDbVo) throws Exception;

    /**
     * 其他出库拣货成功
     * @param id
     * @return
     */
    boolean pickingRestCompleted(Long id) throws Exception;

    /**
     * 其他出库拣货撤销
     * @param id
     * @return
     */
    boolean pickingRestRepeal(Long id);

    /**
     * 其他出库交接
     * @param pickingRestDbVo
     * @return
     */
    PickingRestHandoverDto pickingRestHandover(PickingRestDbVo pickingRestDbVo);

    /**
     * 品质检验单修改仓库单据状态
     * @param updateDocVo
     * @return
     */
    boolean restUpdateStatus(UpdateDocVo updateDocVo);

    /**
     * 拣货方案
     * @param id
     * @return
     */
    SchemeDto point(Long id);

    /**
     * 新增其他出库物料明细
     * @param pickingRestDetail
     * @return
     */
    boolean addRestDetail(PickingRestDetail pickingRestDetail);
}
